package CapadeDatos;
import CapadeDatos.ConexionBD;
import java.sql.CallableStatement;
import modelo.beanmodulo;
import modelo.beanunidad;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import modelo.beanusuario;
import proyectocatalina.Login;

public class DaoVerUnidades {
public static  ArrayList datosunidad(String modulo){
//public static  ArrayList datosunidad(){
        ArrayList lista = new ArrayList();
    try{
            Connection cn = ConexionBD.getInstance().getConnection();
            Statement stm = cn.createStatement();
            String sql ="select unidad.nombre, modulo.nombre from unidad inner join modulo on unidad.cod_mod = modulo.cod_mod where modulo.nombre = "+"'"+ modulo + "';";
//            String sql="Call proc_verunidad('"+modulo+"');";
//            String sql ="select unidad.nombre, modulo.nombre from unidad inner join modulo on unidad.cod_mod = modulo.cod_mod where modulo.nombre ='SISTEMA DE POTENCIA Y AUT';";
            ResultSet rs =stm.executeQuery(sql);
            while (rs.next()){
                   beanunidad unidad  = new beanunidad();
                   unidad.setNombremodulo(rs.getString(1));
                   unidad.setNombreunidad(rs.getString(2));
                   lista.add(unidad);
            }
    }catch(Exception e){System.out.print(e);
   }return lista;
   }
    private beanusuario User;

public void insertarunidad(String cod_unid, int cod_mod, String nombre, String descripcion){
        Boolean verdad = false;
        ArrayList lista = new ArrayList();
    try{
            Connection cn = ConexionBD.getInstance().getConnection();
            Statement stm = cn.createStatement();
            String sql ="Call proc_registrounidad('"+ cod_unid + "',"
                       + " '"+ cod_mod + "',"
                       + " '"+ nombre + "',"
                       + " '"+ descripcion + "');";
            User = Login.usuarioglobal;
            String sql3 = "Call proc_auditoria(?,?,?,?,?,?)";
            Connection cn4 = ConexionBD.getInstance().getConnection();
            CallableStatement insertauditoria = cn4.prepareCall(sql3);
            insertauditoria.setInt(1, User.getIdUsuario());
            insertauditoria.setString(2, "Periodo");
            insertauditoria.setString(3, "insertar");
            insertauditoria.setString(4, "nulo");
            insertauditoria.setString(5,cod_unid +", "+cod_mod+ ", "+nombre+", "+descripcion);
            insertauditoria.setString(6,"nulo");

           if(stm.executeQuery(sql).wasNull()){
               verdad = false;
               JOptionPane.showMessageDialog(null,"NO INGRESADO");
            }
            else {
                verdad = true;
                JOptionPane.showMessageDialog(null,"INGRESADO");
                insertauditoria.execute();
            }
    }catch(Exception e){System.out.print(e);
    JOptionPane.showMessageDialog(null,("Se ah presentado un error: "+"\n"+e+"\n"+ "Comuniquese con su administrador"));
}
}

public void modificarunidad(String cod_unid, int cod_mod, String nombre, String descripcion){
        Boolean verdad = false;
        ArrayList lista = new ArrayList();
    try{
            Connection cn = ConexionBD.getInstance().getConnection();
            Statement stm = cn.createStatement();
            String sql ="Call proc_modificarunidad('"+ cod_unid + "',"
                       + " '"+ cod_mod + "',"
                       + " '"+ nombre + "',"
                       + " '"+ descripcion + "');";
            if(stm.executeQuery(sql).wasNull()){
               verdad = false;
               JOptionPane.showMessageDialog(null,"NO INGRESADO");
            }
            else {
                verdad = true;
                JOptionPane.showMessageDialog(null,"INGRESADO");
            }
    }catch(Exception e){System.out.print(e);
    JOptionPane.showMessageDialog(null,("Se ah presentado un error: "+"\n"+e+"\n"+ "Comuniquese con su administrador"));

}
}
public static List<beanunidad> listaunidad() {
       Connection conexion=null;
        int I;
       try {
        //Connection cn = ConexionBD.getInstance().getConnection();
        //Statement stm = cn.createStatement();
        conexion=ConexionBD.getInstance().getConnection();
        String sql="select cod_unid,nombre,  descripcion from unidad;";
        Statement st=conexion.createStatement();
        ResultSet rs=st.executeQuery(sql);
        //List<beanmodulo> oListItem=new ArrayList<beanmodulo>();
           ArrayList lista = new ArrayList();
       while(rs.next())
            {
               beanunidad unidad = new beanunidad();
               unidad.setNombreunidad(rs.getString(2));
               unidad.setCodunidad(rs.getString(1));
               unidad.setDescunidad(rs.getString(3));
               lista.add(unidad);
            }
        return lista;
       }
       catch(Exception ex)
       {
           ex.printStackTrace();
           return null;
       }
       finally
       {
            try
            {
            conexion.close();
            }
            catch (SQLException ex)
            {
              ex.printStackTrace();
            }
       }
   }
public void actualizarunidad(String codunidad,String nombreunidad,String descripcion){
Boolean verdad = false;
    try{
            Connection cn = ConexionBD.getInstance().getConnection();
            Statement stm = cn.createStatement();
            String sql ="call proc_actualizar_unidad ('"
                 +  codunidad +  "','"
                    +  nombreunidad +  "','"
                 + descripcion + "');";
            if(stm.executeQuery(sql).wasNull()){
               verdad = false;
               JOptionPane.showMessageDialog(null,"NO SE AH ACTUALIZADO");
            }
            else {
                verdad = true;
                JOptionPane.showMessageDialog(null,"SE ACTULIZO CORRECTAMENTE");
            }
    }catch(Exception e){System.out.print(e);
   }
   }


}
